package com.woniuxy.aop;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * @Author: 马宇航
 * @Do: JDK动态代理
 * @DateTime: 22/05/16/0016 下午 2:24
 * @Component: 成都蜗牛学苑
 **/
public class JDKProxyFactory{
    /**
     * 实现jdk动态代理
     * ChangeLog : 1. 创建 (22/05/16/0016 下午 2:27 [马宇航]);
     * @param target 目标接口对象
     * @return java.lang.Object
    */
    public Object createProxy(Object target){
        Object o = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(),
                (Object proxy, Method method, Object[] args) -> {
                    System.out.println("pre enhancement");
                    Object invoke = method.invoke(target, args);
                    System.out.println("post enhancement");
                    return invoke;
                });
        return o;
    }
}
